<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

class Contract extends MY_Controller {

    function __construct(){  
        
        parent::__construct();
    }

    public function index($iid=false,$token=false) {

        if (token($iid) != $token) {
            
            redirect(HTML_URL.'#/error?msg='.urlencode('非法访问'),'refresh');
        }

        // load info
        $this->load->model('project_model', 'mpro', 'default');
        $this->load->model('investment_model', 'minv');

        if (! $investment = $this->minv->get_one(array('id' => intval($iid)))) {
            
            redirect(HTML_URL.'#/error?msg='.urlencode('暂无投资记录'),'refresh');
        }

        if (! $pro = $this->mpro->get_one_user($investment['pid'])) {
            
            redirect(HTML_URL.'#/error?msg='.urlencode('项目还未审核放款，请等项目审核放款后再下载查看！'),'refresh');
        }

        $this->load->model('union_investment_model','muni',"default");
        $fields = 'union_investment.pid,account.realname,union_investment.interest_yet,'
                . 'union_investment.interest_will,union_investment.money,union_investment.create_at';
        $table  = FALSE;
        $expire = 60; //stroing for a minute;
        $where = array("pid"=>$pro['id']);
        $order = array("union_investment.create_at"=>"desc");
        $inv_users = $this->muni->get_list_join_accout(0,0,$order,$where,$fields,FALSE,$expire);

        // $inv_users = $this->minv->get_list_join_accout(0,0,false,array('investment.pid' => $investment['pid']));

        if (! $inv_users) {
            
            redirect(HTML_URL.'#/error?msg='.urlencode('项目投资状态失败！'),'refresh');
        }

        require_once LIBS_PATH.'libraries/tcpdf/tcpdf_config_alt.php';
        require_once LIBS_PATH.'libraries/tcpdf/tcpdf.php';

        $pname = '方泰财富';

        // create new PDF document
        $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);

        // set document information
        $pdf->SetCreator(PDF_CREATOR);
        $pdf->SetAuthor($pname);
        $pdf->SetTitle('借款协议');
        $pdf->SetSubject($pro['title']);
        $pdf->SetKeywords($pname.'投资合同');

        // set default header data
        $pdf->SetHeaderData('', 0, '', ' ', array(0,0,0), '');
        $pdf->setFooterData(array(0,0,0), array(0,0,0));

        // set header and footer fonts
        $pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
        $pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));

        // set default monospaced font
        $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);

        // set margins
        $pdf->SetMargins(PDF_MARGIN_RIGHT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
        $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
        $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);

        // set auto page breaks
        $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);

        // set image scale factor
        $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

        // set some language-dependent strings (optional)

        global $l;
        $l = Array();

        // PAGE META DESCRIPTORS --------------------------------------

        $l['a_meta_charset'] = 'UTF-8';
        $l['a_meta_dir'] = 'ltr';
        $l['a_meta_language'] = 'zh';

        // TRANSLATIONS --------------------------------------
        $l['w_page'] = '页面';

        $pdf->setLanguageArray($l);

        // ---------------------------------------------------------

        // set default font subsetting mode
        $pdf->setFontSubsetting(true);

        // Set font
        // dejavusans is a UTF-8 Unicode font, if you only need to
        // print standard ASCII chars, you can use core fonts like
        // helvetica or times to reduce file size.
        $pdf->SetFont('droidsansfallback', '', 14, '', true);

        // Add a page
        // This method has several options, check the source code documentation for more information.
        $pdf->AddPage();

        // set text shadow effect
        $pdf->setTextShadow(array('enabled'=>true, 'depth_w'=>0.2, 'depth_h'=>0.2, 'color'=>array(196,196,196), 'opacity'=>1, 'blend_mode'=>'Normal'));

        // Set some content to print
        $html_header = '
        <p style="text-align: center;">
            <strong>&nbsp; &nbsp; <span style="font-size: 24px;">&nbsp; 借款协议</span></strong>
        </p>
        <p>
            <strong>甲方（出借人）：</strong>
        </p>';

        $table_html = '<table border="1"><tbody>
                <tr>
                    <td>
                        <p>
                            '.$pname.'用户名
                        </p>
                    </td>
                    <td>
                        <p>
                            借出金额
                        </p>
                    </td>
                    <td>
                        <p>
                            借款期限
                        </p>
                    </td>
                    <td>
                        <p>
                            到期还本息
                        </p>
                    </td>
                </tr>';
        $all_interst = 0;
        foreach ($inv_users as $u) {
            
            $table_html .= '<tr>
                    <td>
                        <p>
                            '.$this->_nameCut($u['realname']).'
                        </p>
                    </td>
                    <td>
                        <p>
                            ￥'.number_format($u['money'], 2).'
                        </p>
                    </td>
                    <td>
                        <p>
                            '.$pro['days'].'天
                        </p>
                    </td>
                    <td>
                        <p>
                            ￥'.number_format($u['money']+$u['interest_yet']+$u['interest_will'], 2).'
                        </p>
                    </td>
                </tr>';
            $all_interst += $u['interest_yet']+$u['interest_will'];
        }

        $table_html .='</tbody></table>';

        $html_header .= $table_html;
        $html_header .='
        <p>
            &nbsp;
        </p>
        <p>
            <strong>乙方（借款人）：'.$this->_nameCut($pro['realname']).'</strong>
        </p>
        <p>
            <strong>'.$pname.'用户名：'.$pro['nickname'].'</strong>
        </p>
        <p>
            &nbsp;
        </p>
        <p>
            <strong>丙方（见证人）：'.$pname.'</strong>
        </p>
        <p>
            <strong>地址：合肥市政务区华邦ICC A座</strong>
        </p>
        <p>
            <br/>
        </p>
        <p>
            鉴于：
        </p>
        <p>
            乙方因个人所需，有借款需求；
        </p>
        <p>
            甲方有出借资金的出借意愿；
        </p>
        <p>
            <strong>甲乙双方均已在丙方方泰财富网站（网址：<a href="http://www.hfftcf.com">http://www.hfftcf.com</a>）上注册，同意丙方合肥方泰网站的《网络借贷平台协议》，并自愿根据《网络借贷平台协议》达成并签订本《网络借贷平台协议》（下称“本协议”）；</strong>
        </p>
        <p>
            丙方同意为甲、乙双方的上述借款提供见证及服务。
        </p>
        <p>
            &nbsp;
        </p>
        <p>
            甲、乙双方基于平等自愿原则，经丙方介绍，就有关借款事项达成如下协议，以兹共守：
        </p>
        <p>
            <strong>各方经协商一致，于 '.date('Y年m月d日').'签订如下协议，共同遵照履行：</strong>
        </p>
        <p>
            &nbsp;
        </p>
        <p>
            <strong>第一条 借款基本信息</strong>
        </p>
        <p>
            &nbsp;
        </p>';

        $html_header .= '
        <table =border="1">
            <tbody>
                <tr class=>
                    <td>
                        <p>
                            借款标名称
                        </p>
                    </td>
                    <td>
                        <p>
                            '.$pro['title'].'
                        </p>
                    </td>
                </tr>
                <tr>
                    <td>
                        <p>
                            借款本金数额
                        </p>
                    </td>
                    <td>
                        <p>
                            ￥'.number_format($pro['money'], 2).'（各出借人借款本金数额详见本协议文首表格）;
                        </p>
                    </td>
                </tr>
                <tr>
                    <td>
                        <p>
                            到期还本息
                        </p>
                    </td>
                    <td>
                        <p>
                            ￥'.number_format($pro['money']+$all_interst, 2).'
                        </p>
                    </td>
                </tr>
                <tr>
                    <td>
                        <p>
                            起息日
                        </p>
                    </td>
                    <td>
                        <p>
                            '.$pro['interest_at'].'
                        </p>
                    </td>
                </tr>
                <tr>
                    <td>
                        <p>
                            还款日
                        </p>
                    </td>
                    <td>
                        <p>
                            '.$pro['repaymenttime'].'（24:00前，节假日不顺延）
                        </p>
                    </td>
                </tr>
            </tbody>
        </table>
        <p>
            &nbsp;
        </p>';

        $html_content ='
        <p>
            <strong>第二条 各方权利和义务 </strong>
        </p>
        <p>
            <strong>甲方的权利和义务 </strong>
        </p>
        <p>
            1、 甲方应按合同约定的借款期限起始日期将足额的借款本金支付给乙方。
        </p>
        <p>
            2、 甲方享有其所出借款项所带来的利息收益。
        </p>
        <p>
            3、 如乙方违约，甲方有权要求丙方提供其已获得的乙方信息，丙方应当提供。
        </p>
        <p>
            4、 无须通知乙方，甲方可以根据自己的意愿进行本协议下其对乙方债权的转让。在甲方的债权转让后，乙方需对债权受让人继续履行本协议下其对甲方的还款义务，不得以未接到债权转让通知为由拒绝履行还款义务。
        </p>
        <p>
            5、 甲方应主动缴纳由利息所得带来的可能的税费。
        </p>
        <p>
            6、 如乙方实际还款金额少于本协议约定的本金、利息及违约金的，甲方各出借人同意各自按照其于本协议文首约定的借款比例收取还款。
        </p>
        <p>
            7、 甲方应确保其提供信息和资料的真实性，不得提供虚假信息或隐瞒重要事实。
        </p>
        <p>
            <strong>乙方权利和义务 </strong>
        </p>
        <p>
            1、 乙方必须按期足额向甲方偿还本金和利息。
        </p>
        <p>
            2、 乙方必须按期足额向丙方支付借款管理费用。
        </p>
        <p>
            3、 乙方承诺所借款项不用于任何违法用途。
        </p>
        <p>
            4、 乙方承诺并保证其向甲方、丙方提供的所有信息均为真实、完整和有效。
        </p>
        <p>
            5、 乙方不得将本协议项下的任何权利义务转让给任何其他方。
        </p>
        <p>
            <strong>丙方的权利和义务 </strong>
        </p>
        <p>
            1、甲方授权并委托丙方代其收取本协议文首所约定的出借人每月应收本息，代收后按照甲方的要求进行处置，乙方对此表示认可。
        </p>
        <p>
            2、甲方授权并委托丙方将其支付的出借本金直接划付至乙方账户，乙方对此表示认可。
        </p>
        <p>
            3、甲、乙双方一致同意，在有必要时，丙方有权代甲方对乙方进行关于本协议借款的违约提醒及催收工作，包括但不限于：电话通知、上门催收提醒、发律师函、对乙方提起诉讼等。甲方在此确认委托丙方为其进行以上工作，并授权丙方可以将此工作委托给本协议外的其他方进行。乙方对前述委托的提醒、催收事项已明确知晓并应积极配合。
        </p>
        <p>
            4、丙方有权按月向乙方收取双方约定的借款管理费，并在有必要时对乙方进行违约提醒及催收工作，包括但不限于电话通知、发律师函、对乙方提起诉讼等。丙方有权将此违约提醒及催收工作委托给本协议外的其他方进行。
        </p>
        <p>
            5、丙方接受甲乙双方的委托行为所产生的法律后果由相应委托方承担。如因乙方或甲方或其他方（包括但不限于技术问题）造成的延误或错误，丙方不承担任何责任。
        </p>
        <p>
            6、丙方应对甲方和乙方的信息及本协议内容保密；如任何一方违约，或因相关权力部门要求（包括但不限于法院、仲裁机构、金融监管机构等），丙方有权披露。
        </p>
        <p>
            7、丙方根据本协议对乙方进行违约提醒及催收工作时，可在其认为必要时进行上门催收提醒，即丙方派出人员（至少2名）至乙方披露的住所地或经常居住地（联系地址）处催收和进行违约提醒，同时向乙方发送催收通知单，乙方应当签收，乙方不签收的，不影响上门催收提醒的进行。丙方采取上门催收提醒的，乙方应当向丙方支付上门提醒费用，收费标准为每次人民币1000.00元，此外，乙方还应向丙方支付进行上门催收提醒服务的差旅费（包括但不限于交通费、食宿费等）。
        </p>
        <p>
            &nbsp;
        </p>
        <p>
            &nbsp;
        </p>
        <p>
            <strong>第三条 逾期还款责任 </strong>
        </p>
        <p>
            1、协议各方均应严格履行合同义务，非经各方协商一致或依照本协议约定，任何一方不得解除本协议。
        </p>
        <p>
            2、任何一方违约，违约方应承担因违约使得其他各方产生的费用和损失，包括但不限于调查、诉讼费、律师费等，应由违约方承担。如违约方为乙方的，甲方有权立即解除本协议，并要求乙方立即偿还未偿还的本金、利息、罚息、违约金。此时，乙方还应向丙方支付所有应付的借款管理费。如本协议提前解除时，乙方在<strong>www.xinhongcf.com</strong>网站的账户里有任何余款的，丙方有权按照本协议第四条第3项的清偿顺序将乙方的余款用于清偿，并要求乙方支付因此产生的相关费用。
        </p>
        <p>
            3、乙方的每期还款均应按照如下顺序清偿：
        </p>
        <p>
            （1）根据本协议产生的其他全部费用；
        </p>
        <p>
            （2）拖欠的利息；
        </p>
        <p>
            （3）拖欠的本金；
        </p>
        <p>
            （4）拖欠丙方的借款管理费；
        </p>
        <p>
            （5）正常的利息；
        </p>
        <p>
            （6）正常的本金；
        </p>
        <p>
            （7）丙方的借款管理费；
        </p>
        <p>
            4、如果乙方逾期支付任何一期还款超过30天，或乙方在逾期后出现逃避、拒绝沟通或拒绝承认欠款事实等恶意行为，本协议项下的全部借款本息及借款管理费均提前到期，乙方应立即清偿本协议下尚未偿付的全部本金、利息、罚息、借款管理费及根据本协议产生的其他全部费用。
        </p>
        <p>
            5、如果乙方逾期支付任何一期还款超过30天，或乙方在逾期后出现逃避、拒绝沟通或拒绝承认欠款事实等恶意行为，丙方有权将乙方的“逾期记录”记入人民银行公民征信系统，丙方不承担任何法律责任。
        </p>
        <p>
            6、如果乙方逾期支付任何一期还款超过30天，或乙方在逾期后出现逃避、拒绝沟通或拒绝承认欠款事实等恶意行为，丙方有权将乙方违约失信的相关信息及乙方其他信息向媒体、用人单位、公安机关、检查机关、法律机关披露，丙方不承担任何责任。
        </p>
        <p>
            7、在乙方还清全部本金、利息、借款管理费、罚息、逾期管理费之前，罚息及逾期管理费的计算不停止。
        </p>
        <p>
            8、本协议中的所有甲方与乙方之间的借款均是相互独立的，一旦乙方逾期未归还借款本息，甲方中的任何一个出借人均有权单独向乙方追索或者提起诉讼。如乙方逾期支付借款管理费或提供虚假信息的，丙方亦可单独向乙方追索或者提起诉讼。
        </p>
        <p>
            &nbsp;
        </p>
        <p>
            <strong>第五条 提前还款 </strong>
        </p>
        <p>
            1、乙方可在借款期间任何时候提前偿还剩余借款。
        </p>
        <p>
            2、提前偿还全部剩余借款
        </p>
        <p>
            1）乙方提前清偿全部剩余借款时，应向甲方支付当期应还本息，剩余本金及提前还款补偿（补偿金额为剩余本金的0.2%）。
        </p>
        <p>
            2）乙方提前清偿全部剩余借款时，应向丙方支付当期借款管理费，乙方无需支付剩余还款期的借款管理费。
        </p>
        <p>
            3、提前偿还部分借款
        </p>
        <p>
            1）乙方提前偿还部分借款，仍应向甲方支付全部借款利息。
        </p>
        <p>
            2）乙方提前偿还部分借款，仍应向丙方支付全部应付的借款管理费。
        </p>
        <p>
            4、任何形式的提前还款不影响丙方向乙方收取在本协议第三条中说明的服务费。
        </p>
        <p>
            &nbsp;
        </p>
        <p>
            <strong>第六条</strong><strong>、法律的适用和争议的解决</strong>
        </p>
        <p>
            &nbsp;
        </p>
        <p>
            1&nbsp; 甲、乙、丙三方在此约定，本协议的履行地为丙方所在地。
        </p>
        <p>
            2&nbsp; 本协议受中华人民共和国法律管辖并按中华人民共和国法律解释。协议履行中发生争议，可由各方协商解决，协商不成的，可以向协议履行地即丙方所在地的人民法院提起诉讼。
        </p>
        <p>
            <strong>第七条 附则 </strong>&nbsp;
        </p>
        <p>
            1、本协议自文本最终生成之日生效。
        </p>
        <p>
            2、本协议签订之日起至借款全部清偿之日止，乙方或甲方有义务在下列信息变更三日内提供更新后的信息给丙方：本人、本人的家庭联系人及紧急联系人、工作单位、居住地址、住所电话、手机号码、电子邮箱、银行账户的变更。若因任何一方不及时提供上述变更信息而带来的损失或额外费用应由该方承担。
        </p>
        <p>
            3、如果本协议中的任何一条或多条违反适用的法律法规，则该条将被视为无效，但该无效条款并不影响本协议其他条款的效力。
        </p>
        <p>
            &nbsp;
        </p>
        <p>
            &nbsp;
        </p>
        <p style="text-align: right;">
            '.date('Y年m月d日').'
        </p>
        <p>
            <br/>
        </p>';

        if (file_exists(UPLOAD_PATH.'hetong.txt')) {
            $html_content = '<div class="content">'.file_get_contents(UPLOAD_PATH.'hetong.txt').'</div>';
        }

        // Print text using writeHTMLCell()
        $pdf->writeHTMLCell(0, 0, '', '', $html_header, 0, 1, 0, true, '', true);
        $pdf->AddPage();
        $pdf->writeHTMLCell(0, 0, '', '', $html_content, 0, 1, 0, true, '', true);
        $pdf->Image(UPLOAD_PATH.'seal.png', 150, 140, 35, 35 , '', '', '', false, false);

        // 密码设置
        //$pdf->SetProtection(array('print', 'modify', 'copy', 'annot-forms', 'fill-forms', 'extract', 'assemble', 'print-high'),'123');

        $pdf->Output('HT'.ordernum_time($iid).'.pdf', 'I');
    }

    private function _nameCut($user_name=''){

        $strlen   = mb_strlen($user_name, 'utf-8');
        $firstStr = mb_substr($user_name, 0, 1, 'utf-8');
        $lastStr  = mb_substr($user_name, -1, 1, 'utf-8');
        return $strlen == 2 ? $firstStr.str_repeat('*', mb_strlen($user_name, 'utf-8') - 1) 
                            : $firstStr.str_repeat("*", $strlen - 2) . $lastStr;
    }
}